
import BackendjsFunctions from '@/core/BackendjsFunctions.js'
import { backendjsFunctions } from '@/core/functions.js'

export default {
  /**
   * 增加组件，同时重新渲染组件的父级容器
   * 通过传入的参数增加Component到容器中去，其中参数如下：
   * bjComponent._other._tmpContainerId 对应需要添加的容器ID
   * bjComponent._other._componentTypeName 需要添加的组件名称
   * bjComponent 数据基本上都是由 getComponent 提供
   * @param {*} bjComponent
   * @returns
   */
  addFormComponent (bjComponent) {
    BackendjsFunctions._verification('addFormComponent')
    try {
      return backendjsFunctions().addFormComponent(bjComponent)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 通过参数添加Component数据，并且渲染
   * @param {*} containerTmpId 父级容器ID
   * @param {*} componentTypeName 组件名称 例如：componentTitle
   */
  addFormComponentParams (containerTmpId, componentTypeName) {
    BackendjsFunctions._verification('addFormComponentParams')
    try {
      return backendjsFunctions().addFormComponentParams(containerTmpId, componentTypeName)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 保存组件，通过参数中的数据，找到组件的位置进行组件数据替换，同时重新渲染组件
   */
  saveFormComponent (bjComponent) {
    BackendjsFunctions._verification('saveFormComponent')
    try {
      return backendjsFunctions().saveFormComponent(bjComponent)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 通过传入的容器ID以及组件名称，生产vue可编辑的组件数据参数
   * @param {*} containerTmpId 父级容器ID
   * @param {*} componentTypeName 组件名称 例如：componentTitle
   */
  getFormComponent (containerTmpId, componentTypeName) {
    BackendjsFunctions._verification('getFormComponent')
    try {
      return backendjsFunctions().getFormComponent(containerTmpId, componentTypeName)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 通过容器的ID删除容器中的组件
   * @returns 返回被删除的组件
   */
  delFormComponentByTmpContainerId (containerTmpId) {
    BackendjsFunctions._verification('delFormComponentByTmpContainerId')
    try {
      return backendjsFunctions().delFormComponentByTmpContainerId(containerTmpId)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
    * 通过组件ID删除该组件
    * @returns 返回被删除的组件
    */
  delFormComponentByTmpId (tmpId) {
    BackendjsFunctions._verification('delFormComponentByTmpId')
    try {
      return backendjsFunctions().delFormComponentByTmpId(tmpId)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 显示组件的边框
   * @param {*} tmpId 组件的 tmpId 数据
   * @returns boolean
   */
  showBorderFormComponent (tmpId) {
    BackendjsFunctions._verification('showBorderFormComponent')
    try {
      return backendjsFunctions().showBorderFormComponent(tmpId)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 隐藏组件的边框
   * @param {*} tmpId 组件的 tmpId 数据
   * @returns boolean
   */
  hideBorderFormComponent (tmpId) {
    BackendjsFunctions._verification('hideBorderFormComponent')
    try {
      return backendjsFunctions().hideBorderFormComponent(tmpId)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 隐藏所有的组件边框
   * @returns boolean
   */
  hideAllBorderFormComponent () {
    BackendjsFunctions._verification('hideAllBorderFormComponent')
    try {
      return backendjsFunctions().hideAllBorderFormComponent()
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 根据组件的 tmpId ，页面滚动条定位
   * @param {*} tmpId 组件的 tmpId 数据
   * @returns boolean
   */
  scrollFormComponent (tmpId) {
    BackendjsFunctions._verification('scrollFormComponent')
    try {
      return backendjsFunctions().scrollFormComponent(tmpId)
    } catch (error) {
      console.error(error)
    }
    return null
  }
}
